/* 
 * File:   ConfigLoader.hpp
 * Author: SemiNick
 *
 * Created on 2 de Julho de 2011, 20:07
 */

#ifndef CONFIGLOADER_HPP
#define	CONFIGLOADER_HPP

#include <string>
#include <map>

namespace utils {

    class ConfigLoader {

        public:
            
        /**
         * Cria um objeto que lerá as configurações de um arquivo na forma:
         * chave="valor"
         * @param file Arquivo que será usado para ler as chaves
         */
        ConfigLoader(const std::string& file) throw (std::exception);
        
        /**
         * Cria um objeto que lerá as configurações de um arquivo na forma:
         * chave="valor"
         * @param file Arquivo que será usado para ler as chaves
         */
        /*ConfigLoader(const std::string* file) throw (std::exception);*/
        
        ~ConfigLoader();
        
        /**
         * Retorna alguma valor atribuído àlguma propriedade no arquivo usado
         * para construir essa classe.
         * @param key nome da propriedade
         * @return ponteiro para uma nova string contento o valor da propriedade
         * encontrada ou 0 caso a propriedade não exista. A string retornada
         * deverá ser desalocada explicitamente após seu uso.
         */
        std::string* getValue(const std::string key) const;
        
        private:
            
            std::map<std::string, std::string> props;
    };
}

#endif	/* CONFIGLOADER_HPP */

